        PROGRAM ISTLY
 
        INTEGER IODSRC,IODCMT,IODTRE,IODSYM,IODCI,NERROR,NWARN,
     +          SRCPTH(134),CMTPTH(134),TREPTH(134),
     +          SYMPTH(134),CIPTH(134)
 
        INTEGER YPARSE,GETARG,OPEN,CREATE
        EXTERNAL YPARSE,ZINIT,ZMESS,ERROR,ZQUIT,GETARG,OPEN,CREATE,
     +           ZCHOUT,ZPTINT,PUTCH
 
        CALL ZINIT
        CALL INISTR
        CALL INISYM
        CALL INITRE
 
        IF (GETARG(1,SRCPTH,81).EQ.-100) CALL NAMES(1,SRCPTH)
        IF (GETARG(2,CMTPTH,81).EQ.-100) CALL NAMES(2,CMTPTH)
        IF (GETARG(3,TREPTH,81).EQ.-100) CALL NAMES(3,TREPTH)
        IF (GETARG(4,SYMPTH,81).EQ.-100) CALL NAMES(4,SYMPTH)
        IF (GETARG(5,CIPTH,81).EQ.-100) CALL NAMES(5,CIPTH)
 
        IODSRC=OPEN(SRCPTH,0)
        IF (IODSRC.EQ.-1) CALL ERROR('Source File Open Failed.')
        IODCMT=CREATE(CMTPTH,1)
        IF (IODCMT.EQ.-1) CALL ERROR('Comment File Create Failed.')
        IODTRE=CREATE(TREPTH,1)
        IF (IODTRE.EQ.-1) CALL ERROR('Tree Path Create Failed.')
        IODSYM=CREATE(SYMPTH,1)
        IF (IODSYM.EQ.-1) CALL ERROR('Symbol table Create Failed.')
        IODCI=CREATE(CIPTH,1)
        IF (IODCI.EQ.-1) CALL ERROR('Comment index Create Failed.')
 
        IF (YPARSE(IODSRC,IODCMT,IODSYM,IODCI,NERROR,NWARN).EQ.0) THEN
            CALL ZYSOUT(IODSYM)
            CALL ZYTOUT(IODTRE)
            IF (NERROR+NWARN.EQ.0) THEN
                CALL ZMESS('[ISTLY Normal Termination].',1)
                CALL ZQUIT(-2)
            ELSE IF (NERROR.EQ.0) THEN
                CALL ZCHOUT('[ISTLY Terminated, .',1)
                CALL ZPTINT(NWARN,1,1)
                CALL ZCHOUT(' war'//'ning.',1)
                IF (NWARN.GT.1) CALL PUTCH(115,1)
                CALL ZMESS('].',1)
                CALL ZQUIT(-1002)
            ELSE
                CALL ZCHOUT('[ISTLY Terminated, .',1)
                CALL ZPTINT(NERROR,1,1)
                CALL ZCHOUT(' er'//'ror.',1)
                IF (NERROR.GT.1) CALL PUTCH(115,1)
                CALL ZMESS('].',1)
                CALL ZQUIT(-1)
            END IF
        ELSE
            CALL ERROR('[ISTLY Fatal Error -- Terminated].')
        END IF
 
        END
C ----------------------------------------------------------------------
C
C       N A M E S   -   Input the pathname of a required file from stdin
C
 
        SUBROUTINE NAMES(NUMBER,PATH)
        INTEGER NUMBER,PATH(*)
 
        INTEGER JUNK,PROMPT(23,5)
 
        SAVE PROMPT
 
        INTEGER ZGTCMD
        EXTERNAL ZGTCMD,ZPRMPT
 
C "Input source file: "
C "Output comment file: "
C "Output parse tree: "
C "Output symbol table: "
C "Output comment index: "
 
        DATA (PROMPT(I,1),I=1,20)/73,110,112,117,116,32,115,
     +111,117,114,99,101,32,102,105,108,101,58,
     +32,129/,
     +       (PROMPT(I,2),I=1,22)/79,117,116,112,117,116,32,
     +99,111,109,109,101,110,116,32,102,105,108,101,
     +58,32,129/,
     +       (PROMPT(I,3),I=1,20)/79,117,116,112,117,116,32,
     +112,97,114,115,101,32,116,114,101,101,58,32,
     +129/,
     +       (PROMPT(I,4),I=1,22)/79,117,116,112,117,116,32,
     +115,121,109,98,111,108,32,116,97,98,108,101,
     +58,32,129/,
     +       (PROMPT(I,5),I=1,23)/79,117,116,112,117,116,32,
     +99,111,109,109,101,110,116,32,105,110,100,101,120,
     +58,32,129/
 
        CALL ZPRMPT(PROMPT(1,NUMBER))
        JUNK=ZGTCMD(PATH,0)
 
        END
